'use strict'

let {paramcheck} = require('titbit-toolkit')

/**
 * 设定body参数检测规则，以下代码中中间件配置会启用此规则。
 */
let pck = new paramcheck({
  key: 'body',
  data: {
    username: {
      must: true,
    },
    passwd: {
      must: true
    }
  }
})

class adminlogin {

  constructor () {
    this.param = ''
  }

  /**
   * 创建资源
   * @param {context} c
   * @returns 
   */
  async post (c) {

    let {username, passwd} = c.body

    let r = await c.service.admin.loginVerify(username, passwd)

    if (!r.ok) {
      return c.status(403).send('用户名或密码错误')
    }

    let token = c.service.atok.make(r.data)

    c.send({
      token,
      username: r.data.username,
      role: r.data.role,
      level: r.data.level
    })
    
  }

  __mid () {
    return [
      {
        //针对post函数启用参数检测，如果没有提交username和passwd会自动返回400错误。
        middleware: pck,
        path: [ 'post' ]
      }
    ]
  }

}

module.exports = adminlogin
